package ru.susu.algebra.field.quadratic;

import java.math.BigInteger;

/**
 * Квадратичное поле. Задается элементом, порождающим поле.
 * Также у квадратичного поля можно найти основную единицу {@link QuadraticGeneralUnitExtractor}
 *
 * @author akargapolov
 * @since: 28.03.2009
 */
public class QuadraticField
{
	private QuadraticInteger _generateInteger;
	private QuadraticFieldGeneralForm _generalUnit;

	public QuadraticField(QuadraticInteger generateInteger) throws Exception
	{
		_generateInteger = generateInteger;
		if (generateInteger.getD().compareTo(BigInteger.ZERO) <= 0)
		{
			_generalUnit = new QuadraticFieldGeneralForm(BigInteger.ONE, BigInteger.ZERO, BigInteger.ZERO);
		}
		else
		{
			_generalUnit = new QuadraticGeneralUnitExtractor().getGeneralUnit(_generateInteger);
		}
	}

	/**
	 * @return порождающий элемент
	 */
	public QuadraticInteger getGenerateInteger()
	{
		return _generateInteger;
	}

	/**
	 * @return основная единица квадратичного поля
	 */
	public QuadraticFieldGeneralForm getGeneralUnit()
	{
		return _generalUnit;
	}

	@Override
	public String toString()
	{
		return _generalUnit.toString();
	}
}
